[INFO] cloning repository https://github.com/tdv57/rsh
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/tdv57/rsh" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftdv57%2Frsh", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftdv57%2Frsh'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 172c00bd770477206e6a6ef28f82f1130575c531
[INFO] checking tdv57/rsh against try#8ac0915e346f9a2e49ca3951b642c55bd7d1eaab for pr-158447
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftdv57%2Frsh" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] [stderr] Updating files:  74% (838/1125)
Updating files:  75% (844/1125)
Updating files:  76% (855/1125)
Updating files:  77% (867/1125)
Updating files:  78% (878/1125)
Updating files:  79% (889/1125)
Updating files:  80% (900/1125)
Updating files:  81% (912/1125)
Updating files:  82% (923/1125)
Updating files:  83% (934/1125)
Updating files:  84% (945/1125)
Updating files:  85% (957/1125)
Updating files:  86% (968/1125)
Updating files:  87% (979/1125)
Updating files:  88% (990/1125)
Updating files:  89% (1002/1125)
Updating files:  90% (1013/1125)
Updating files:  91% (1024/1125)
Updating files:  92% (1035/1125)
Updating files:  93% (1047/1125)
Updating files:  94% (1058/1125)
Updating files:  95% (1069/1125)
Updating files:  96% (1080/1125)
Updating files:  97% (1092/1125)
Updating files:  98% (1103/1125)
Updating files:  99% (1114/1125)
Updating files: 100% (1125/1125)
Updating files: 100% (1125/1125), done.
[INFO] started tweaking git repo https://github.com/tdv57/rsh
[INFO] finished tweaking git repo https://github.com/tdv57/rsh
[INFO] tweaked toml for git repo https://github.com/tdv57/rsh written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/tdv57/rsh on toolchain 8ac0915e346f9a2e49ca3951b642c55bd7d1eaab
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+8ac0915e346f9a2e49ca3951b642c55bd7d1eaab" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/tdv57/rsh already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+8ac0915e346f9a2e49ca3951b642c55bd7d1eaab" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 064f20d1994a51137e0e855dc51667f9ffa013d17c0a577ab6610ca463063e69
[INFO] running `Command { std: "docker" "start" "064f20d1994a51137e0e855dc51667f9ffa013d17c0a577ab6610ca463063e69", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "064f20d1994a51137e0e855dc51667f9ffa013d17c0a577ab6610ca463063e69" "/opt/rustwide/cargo-home/bin/cargo" "+8ac0915e346f9a2e49ca3951b642c55bd7d1eaab" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "064f20d1994a51137e0e855dc51667f9ffa013d17c0a577ab6610ca463063e69", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "064f20d1994a51137e0e855dc51667f9ffa013d17c0a577ab6610ca463063e69" "/opt/rustwide/cargo-home/bin/cargo" "+8ac0915e346f9a2e49ca3951b642c55bd7d1eaab" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.177
[INFO] [stderr]    Compiling cfg_aliases v0.1.1
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]    Compiling nix v0.28.0
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking signal-hook-registry v1.4.6
[INFO] [stderr]     Checking mio v1.1.0
[INFO] [stderr]     Checking socket2 v0.6.1
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking tokio v1.48.0
[INFO] [stderr]     Checking rust_shell v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0433]: cannot find module or crate `crossterm` in this scope
[INFO] [stdout]    --> src/command_handler.rs:497:13
[INFO] [stdout]     |
[INFO] [stdout] 497 |         use crossterm::terminal::{enable_raw_mode, disable_raw_mode};
[INFO] [stdout]     |             ^^^^^^^^^ use of unresolved module or unlinked crate `crossterm`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `crossterm`, use `cargo add crossterm` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `crossterm` in this scope
[INFO] [stdout]   --> src/signal_handler.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 |     use crossterm::terminal::{enable_raw_mode, disable_raw_mode};
[INFO] [stdout]    |         ^^^^^^^^^ use of unresolved module or unlinked crate `crossterm`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `crossterm`, use `cargo add crossterm` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `crossterm` in this scope
[INFO] [stdout]   --> src/signal_handler.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 |     use crossterm::event::{self, Event, KeyCode, KeyEvent, KeyModifiers};
[INFO] [stdout]    |         ^^^^^^^^^ use of unresolved module or unlinked crate `crossterm`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `crossterm`, use `cargo add crossterm` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Display`
[INFO] [stdout]  --> src/main.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::Display;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::error::Error`
[INFO] [stdout]  --> src/main.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::error::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/main.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `command_handler::handler::CommandHandler`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use command_handler::handler::CommandHandler;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufRead`, `Read`, and `self`
[INFO] [stdout]  --> src/shell_error.rs:1:15
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::{self, BufRead, Read, Write};
[INFO] [stdout]   |               ^^^^  ^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::shell_error::ShellError`
[INFO] [stdout]   --> src/token.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::shell_error::ShellError;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Display`
[INFO] [stdout]  --> src/input.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::Display;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::error::Error`
[INFO] [stdout]  --> src/input.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::error::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::process::Output`
[INFO] [stdout]  --> src/input.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::process::Output;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Display`
[INFO] [stdout]  --> src/output.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::Display;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::error::Error`
[INFO] [stdout]  --> src/output.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::error::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AsyncReadExt` and `AsyncWrite`
[INFO] [stdout]  --> src/output.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tokio::io::{ AsyncReadExt, AsyncWrite, AsyncWriteExt, DuplexStream};
[INFO] [stdout]   |                  ^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs::File`
[INFO] [stdout]  --> src/output.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::fs::File;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::instruction`
[INFO] [stdout]  --> src/output.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::instruction;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `nix::libc::int32_t`
[INFO] [stdout]   --> src/command_handler.rs:22:13
[INFO] [stdout]    |
[INFO] [stdout] 22 |         use nix::libc::int32_t;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::token::*`
[INFO] [stdout]   --> src/command_handler.rs:25:13
[INFO] [stdout]    |
[INFO] [stdout] 25 |         use crate::token::*;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::input::*`
[INFO] [stdout]   --> src/command_handler.rs:26:13
[INFO] [stdout]    |
[INFO] [stdout] 26 |         use crate::input::*;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::output::*`
[INFO] [stdout]   --> src/command_handler.rs:27:13
[INFO] [stdout]    |
[INFO] [stdout] 27 |         use crate::output::*;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::instruction::*`
[INFO] [stdout]   --> src/command_handler.rs:28:13
[INFO] [stdout]    |
[INFO] [stdout] 28 |         use crate::instruction::*;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/command_handler.rs:41:20
[INFO] [stdout]    |
[INFO] [stdout] 41 |                 if (is_operator(first_char)) {
[INFO] [stdout]    |                    ^                       ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 41 -                 if (is_operator(first_char)) {
[INFO] [stdout] 41 +                 if is_operator(first_char)  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/command_handler.rs:184:16
[INFO] [stdout]     |
[INFO] [stdout] 184 |             if (!tokens_to_execute.is_empty()) {
[INFO] [stdout]     |                ^                             ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 184 -             if (!tokens_to_execute.is_empty()) {
[INFO] [stdout] 184 +             if !tokens_to_execute.is_empty()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufRead`, `Stdin`, and `self`
[INFO] [stdout]    --> src/command_handler.rs:481:23
[INFO] [stdout]     |
[INFO] [stdout] 481 |         use std::io::{self, BufRead, Read, Stdin, Write};
[INFO] [stdout]     |                       ^^^^  ^^^^^^^        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::shell_error::*`
[INFO] [stdout]    --> src/command_handler.rs:482:13
[INFO] [stdout]     |
[INFO] [stdout] 482 |         use crate::shell_error::*;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::shell_variables`
[INFO] [stdout]    --> src/command_handler.rs:483:13
[INFO] [stdout]     |
[INFO] [stdout] 483 |         use crate::shell_variables;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::token::*`
[INFO] [stdout]    --> src/command_handler.rs:484:13
[INFO] [stdout]     |
[INFO] [stdout] 484 |         use crate::token::*;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::instruction::*`
[INFO] [stdout]    --> src/command_handler.rs:487:13
[INFO] [stdout]     |
[INFO] [stdout] 487 |         use crate::instruction::*;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]    --> src/command_handler.rs:491:13
[INFO] [stdout]     |
[INFO] [stdout] 491 |         use std::str::FromStr;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AsyncRead`, `AsyncWrite`, `DuplexStream`, and `duplex`
[INFO] [stdout]    --> src/command_handler.rs:494:25
[INFO] [stdout]     |
[INFO] [stdout] 494 |         use tokio::io::{DuplexStream, duplex,AsyncRead, AsyncWrite, AsyncWriteExt};
[INFO] [stdout]     |                         ^^^^^^^^^^^^  ^^^^^^ ^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::process::Stdio`
[INFO] [stdout]    --> src/command_handler.rs:495:13
[INFO] [stdout]     |
[INFO] [stdout] 495 |         use std::process::Stdio;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/instruction.rs:94:12
[INFO] [stdout]    |
[INFO] [stdout] 94 |         if (self.command.is_empty()) {
[INFO] [stdout]    |            ^                       ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 94 -         if (self.command.is_empty()) {
[INFO] [stdout] 94 +         if self.command.is_empty() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/instruction.rs:95:16
[INFO] [stdout]    |
[INFO] [stdout] 95 |             if (self.args.len() != 0) {
[INFO] [stdout]    |                ^                    ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 95 -             if (self.args.len() != 0) {
[INFO] [stdout] 95 +             if self.args.len() != 0 {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::env::var`
[INFO] [stdout]   --> src/shell_variables.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::env::var;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::env::vars_os`
[INFO] [stdout]   --> src/shell_variables.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::env::vars_os;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::hash::Hash`
[INFO] [stdout]   --> src/shell_variables.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::hash::Hash;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/shell_variables.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread::spawn`
[INFO] [stdout]   --> src/shell_variables.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::thread::spawn;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::Mutex`
[INFO] [stdout]   --> src/shell_variables.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use tokio::sync::Mutex;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::instruction`
[INFO] [stdout]   --> src/shell_variables.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::instruction;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::shell_instance`
[INFO] [stdout]   --> src/shell_variables.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use crate::shell_instance;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::shell_instance::ShellInstance`
[INFO] [stdout]   --> src/shell_variables.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use crate::shell_instance::ShellInstance;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::shell_variables`
[INFO] [stdout]   --> src/shell_variables.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | use crate::shell_variables;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::pin::Pin`
[INFO] [stdout]   --> src/shell_variables.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use std::pin::Pin;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ForkResult`, `dup2`, and `fork`
[INFO] [stdout]   --> src/shell_variables.rs:35:19
[INFO] [stdout]    |
[INFO] [stdout] 35 | use nix::unistd::{fork, ForkResult, dup2};
[INFO] [stdout]    |                   ^^^^  ^^^^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `nix::sys::wait::waitpid`
[INFO] [stdout]   --> src/shell_variables.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 | use nix::sys::wait::waitpid;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::os::unix::io::AsRawFd`
[INFO] [stdout]   --> src/shell_variables.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | use std::os::unix::io::AsRawFd;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::shell_instance`
[INFO] [stdout]  --> src/shell_instance.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::shell_instance;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::shell_variables`
[INFO] [stdout]  --> src/shell_instance.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::shell_variables;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::token::*`
[INFO] [stdout]  --> src/shell_instance.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::token::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::input::*`
[INFO] [stdout]  --> src/shell_instance.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::input::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::output::*`
[INFO] [stdout]  --> src/shell_instance.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::output::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::instruction::*`
[INFO] [stdout]   --> src/shell_instance.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::instruction::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::io_manager::read_line_sync`
[INFO] [stdout]   --> src/shell_instance.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::io_manager::read_line_sync;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `IOManager`, `ShellCommands`, `read_line_sync`, `self`, and `self`
[INFO] [stdout]   --> src/shell_instance.rs:89:30
[INFO] [stdout]    |
[INFO] [stdout] 89 | ...o_manager::{IOManager, read_line_sync}, shell_instance::{self, ShellInstance}, shell_variables::{self, ShellCommands}};
[INFO] [stdout]    |                ^^^^^^^^^  ^^^^^^^^^^^^^^                    ^^^^                                    ^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/signal_handler.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 |     use std::io::{self, Write};
[INFO] [stdout]   |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `nix::unistd::Pid`
[INFO] [stdout]   --> src/signal_handler.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 |     use nix::unistd::Pid;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> src/signal_handler.rs:14:34
[INFO] [stdout]    |
[INFO] [stdout] 14 |     use crate::shell_variables::{self, ShellVariables};
[INFO] [stdout]    |                                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/signal_handler.rs:139:22
[INFO] [stdout]     |
[INFO] [stdout] 139 |                 while(self.index > start_index) {
[INFO] [stdout]     |                      ^                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 139 -                 while(self.index > start_index) {
[INFO] [stdout] 139 +                 while self.index > start_index {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/signal_handler.rs:160:26
[INFO] [stdout]     |
[INFO] [stdout] 160 |                     while(self.index > start_index) {
[INFO] [stdout]     |                          ^                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 160 -                     while(self.index > start_index) {
[INFO] [stdout] 160 +                     while self.index > start_index {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated type alias `nix::libc::int32_t`: Use i32 instead.
[INFO] [stdout]   --> src/command_handler.rs:22:24
[INFO] [stdout]    |
[INFO] [stdout] 22 |         use nix::libc::int32_t;
[INFO] [stdout]    |                        ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `crossterm` in this scope
[INFO] [stdout]    --> src/command_handler.rs:497:13
[INFO] [stdout]     |
[INFO] [stdout] 497 |         use crossterm::terminal::{enable_raw_mode, disable_raw_mode};
[INFO] [stdout]     |             ^^^^^^^^^ use of unresolved module or unlinked crate `crossterm`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `crossterm`, use `cargo add crossterm` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `crossterm` in this scope
[INFO] [stdout]   --> src/signal_handler.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 |     use crossterm::terminal::{enable_raw_mode, disable_raw_mode};
[INFO] [stdout]    |         ^^^^^^^^^ use of unresolved module or unlinked crate `crossterm`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `crossterm`, use `cargo add crossterm` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `crossterm` in this scope
[INFO] [stdout]   --> src/signal_handler.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 |     use crossterm::event::{self, Event, KeyCode, KeyEvent, KeyModifiers};
[INFO] [stdout]    |         ^^^^^^^^^ use of unresolved module or unlinked crate `crossterm`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `crossterm`, use `cargo add crossterm` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Display`
[INFO] [stdout]  --> src/main.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::Display;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::error::Error`
[INFO] [stdout]  --> src/main.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::error::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/main.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `command_handler::handler::CommandHandler`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use command_handler::handler::CommandHandler;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufRead`, `Read`, and `self`
[INFO] [stdout]  --> src/shell_error.rs:1:15
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::{self, BufRead, Read, Write};
[INFO] [stdout]   |               ^^^^  ^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::shell_error::ShellError`
[INFO] [stdout]   --> src/token.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::shell_error::ShellError;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Display`
[INFO] [stdout]  --> src/input.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::Display;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::error::Error`
[INFO] [stdout]  --> src/input.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::error::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::process::Output`
[INFO] [stdout]  --> src/input.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::process::Output;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Display`
[INFO] [stdout]  --> src/output.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::Display;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::error::Error`
[INFO] [stdout]  --> src/output.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::error::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AsyncReadExt` and `AsyncWrite`
[INFO] [stdout]  --> src/output.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tokio::io::{ AsyncReadExt, AsyncWrite, AsyncWriteExt, DuplexStream};
[INFO] [stdout]   |                  ^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs::File`
[INFO] [stdout]  --> src/output.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::fs::File;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::instruction`
[INFO] [stdout]  --> src/output.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::instruction;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `nix::libc::int32_t`
[INFO] [stdout]   --> src/command_handler.rs:22:13
[INFO] [stdout]    |
[INFO] [stdout] 22 |         use nix::libc::int32_t;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::token::*`
[INFO] [stdout]   --> src/command_handler.rs:25:13
[INFO] [stdout]    |
[INFO] [stdout] 25 |         use crate::token::*;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::input::*`
[INFO] [stdout]   --> src/command_handler.rs:26:13
[INFO] [stdout]    |
[INFO] [stdout] 26 |         use crate::input::*;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::output::*`
[INFO] [stdout]   --> src/command_handler.rs:27:13
[INFO] [stdout]    |
[INFO] [stdout] 27 |         use crate::output::*;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::instruction::*`
[INFO] [stdout]   --> src/command_handler.rs:28:13
[INFO] [stdout]    |
[INFO] [stdout] 28 |         use crate::instruction::*;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/command_handler.rs:41:20
[INFO] [stdout]    |
[INFO] [stdout] 41 |                 if (is_operator(first_char)) {
[INFO] [stdout]    |                    ^                       ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 41 -                 if (is_operator(first_char)) {
[INFO] [stdout] 41 +                 if is_operator(first_char)  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/command_handler.rs:184:16
[INFO] [stdout]     |
[INFO] [stdout] 184 |             if (!tokens_to_execute.is_empty()) {
[INFO] [stdout]     |                ^                             ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 184 -             if (!tokens_to_execute.is_empty()) {
[INFO] [stdout] 184 +             if !tokens_to_execute.is_empty()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufRead`, `Stdin`, and `self`
[INFO] [stdout]    --> src/command_handler.rs:481:23
[INFO] [stdout]     |
[INFO] [stdout] 481 |         use std::io::{self, BufRead, Read, Stdin, Write};
[INFO] [stdout]     |                       ^^^^  ^^^^^^^        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::shell_error::*`
[INFO] [stdout]    --> src/command_handler.rs:482:13
[INFO] [stdout]     |
[INFO] [stdout] 482 |         use crate::shell_error::*;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::shell_variables`
[INFO] [stdout]    --> src/command_handler.rs:483:13
[INFO] [stdout]     |
[INFO] [stdout] 483 |         use crate::shell_variables;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::token::*`
[INFO] [stdout]    --> src/command_handler.rs:484:13
[INFO] [stdout]     |
[INFO] [stdout] 484 |         use crate::token::*;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::instruction::*`
[INFO] [stdout]    --> src/command_handler.rs:487:13
[INFO] [stdout]     |
[INFO] [stdout] 487 |         use crate::instruction::*;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]    --> src/command_handler.rs:491:13
[INFO] [stdout]     |
[INFO] [stdout] 491 |         use std::str::FromStr;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AsyncRead`, `AsyncWrite`, `DuplexStream`, and `duplex`
[INFO] [stdout]    --> src/command_handler.rs:494:25
[INFO] [stdout]     |
[INFO] [stdout] 494 |         use tokio::io::{DuplexStream, duplex,AsyncRead, AsyncWrite, AsyncWriteExt};
[INFO] [stdout]     |                         ^^^^^^^^^^^^  ^^^^^^ ^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::process::Stdio`
[INFO] [stdout]    --> src/command_handler.rs:495:13
[INFO] [stdout]     |
[INFO] [stdout] 495 |         use std::process::Stdio;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/instruction.rs:94:12
[INFO] [stdout]    |
[INFO] [stdout] 94 |         if (self.command.is_empty()) {
[INFO] [stdout]    |            ^                       ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 94 -         if (self.command.is_empty()) {
[INFO] [stdout] 94 +         if self.command.is_empty() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/instruction.rs:95:16
[INFO] [stdout]    |
[INFO] [stdout] 95 |             if (self.args.len() != 0) {
[INFO] [stdout]    |                ^                    ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 95 -             if (self.args.len() != 0) {
[INFO] [stdout] 95 +             if self.args.len() != 0 {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::env::var`
[INFO] [stdout]   --> src/shell_variables.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::env::var;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::env::vars_os`
[INFO] [stdout]   --> src/shell_variables.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::env::vars_os;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::hash::Hash`
[INFO] [stdout]   --> src/shell_variables.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::hash::Hash;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/shell_variables.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread::spawn`
[INFO] [stdout]   --> src/shell_variables.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::thread::spawn;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::Mutex`
[INFO] [stdout]   --> src/shell_variables.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use tokio::sync::Mutex;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::instruction`
[INFO] [stdout]   --> src/shell_variables.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::instruction;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::shell_instance`
[INFO] [stdout]   --> src/shell_variables.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use crate::shell_instance;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::shell_instance::ShellInstance`
[INFO] [stdout]   --> src/shell_variables.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use crate::shell_instance::ShellInstance;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::shell_variables`
[INFO] [stdout]   --> src/shell_variables.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | use crate::shell_variables;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::pin::Pin`
[INFO] [stdout]   --> src/shell_variables.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use std::pin::Pin;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ForkResult`, `dup2`, and `fork`
[INFO] [stdout]   --> src/shell_variables.rs:35:19
[INFO] [stdout]    |
[INFO] [stdout] 35 | use nix::unistd::{fork, ForkResult, dup2};
[INFO] [stdout]    |                   ^^^^  ^^^^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `nix::sys::wait::waitpid`
[INFO] [stdout]   --> src/shell_variables.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 | use nix::sys::wait::waitpid;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::os::unix::io::AsRawFd`
[INFO] [stdout]   --> src/shell_variables.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | use std::os::unix::io::AsRawFd;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::shell_instance`
[INFO] [stdout]  --> src/shell_instance.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::shell_instance;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::shell_variables`
[INFO] [stdout]  --> src/shell_instance.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::shell_variables;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::token::*`
[INFO] [stdout]  --> src/shell_instance.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::token::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::input::*`
[INFO] [stdout]  --> src/shell_instance.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::input::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::output::*`
[INFO] [stdout]  --> src/shell_instance.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::output::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::instruction::*`
[INFO] [stdout]   --> src/shell_instance.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::instruction::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::io_manager::read_line_sync`
[INFO] [stdout]   --> src/shell_instance.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::io_manager::read_line_sync;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `IOManager`, `ShellCommands`, `read_line_sync`, `self`, and `self`
[INFO] [stdout]   --> src/shell_instance.rs:89:30
[INFO] [stdout]    |
[INFO] [stdout] 89 | ...o_manager::{IOManager, read_line_sync}, shell_instance::{self, ShellInstance}, shell_variables::{self, ShellCommands}};
[INFO] [stdout]    |                ^^^^^^^^^  ^^^^^^^^^^^^^^                    ^^^^                                    ^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/signal_handler.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 |     use std::io::{self, Write};
[INFO] [stdout]   |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `nix::unistd::Pid`
[INFO] [stdout]   --> src/signal_handler.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 |     use nix::unistd::Pid;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> src/signal_handler.rs:14:34
[INFO] [stdout]    |
[INFO] [stdout] 14 |     use crate::shell_variables::{self, ShellVariables};
[INFO] [stdout]    |                                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/signal_handler.rs:139:22
[INFO] [stdout]     |
[INFO] [stdout] 139 |                 while(self.index > start_index) {
[INFO] [stdout]     |                      ^                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 139 -                 while(self.index > start_index) {
[INFO] [stdout] 139 +                 while self.index > start_index {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/signal_handler.rs:160:26
[INFO] [stdout]     |
[INFO] [stdout] 160 |                     while(self.index > start_index) {
[INFO] [stdout]     |                          ^                        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 160 -                     while(self.index > start_index) {
[INFO] [stdout] 160 +                     while self.index > start_index {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated type alias `nix::libc::int32_t`: Use i32 instead.
[INFO] [stdout]   --> src/command_handler.rs:22:24
[INFO] [stdout]    |
[INFO] [stdout] 22 |         use nix::libc::int32_t;
[INFO] [stdout]    |                        ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/output.rs:49:24
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub async fn write(mut instruction: &mut Instruction, buffer: String) -> () {
[INFO] [stdout]    |                        ----^^^^^^^^^^^
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/output.rs:49:24
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub async fn write(mut instruction: &mut Instruction, buffer: String) -> () {
[INFO] [stdout]    |                        ----^^^^^^^^^^^
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/command_handler.rs:590:21
[INFO] [stdout]     |
[INFO] [stdout] 590 |                 let mut shell_variables_clone = shell_variables.clone();
[INFO] [stdout]     |                     ----^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/command_handler.rs:628:21
[INFO] [stdout]     |
[INFO] [stdout] 628 |                 let mut handle = cmd.spawn().unwrap();
[INFO] [stdout]     |                     ----^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/shell_variables.rs:545:13
[INFO] [stdout]     |
[INFO] [stdout] 545 |         let mut res = 0;
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/shell_variables.rs:573:13
[INFO] [stdout]     |
[INFO] [stdout] 573 |         let mut instruction = instruction;
[INFO] [stdout]     |             ----^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/command_handler.rs:590:21
[INFO] [stdout]     |
[INFO] [stdout] 590 |                 let mut shell_variables_clone = shell_variables.clone();
[INFO] [stdout]     |                     ----^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/command_handler.rs:628:21
[INFO] [stdout]     |
[INFO] [stdout] 628 |                 let mut handle = cmd.spawn().unwrap();
[INFO] [stdout]     |                     ----^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/shell_variables.rs:221:37
[INFO] [stdout]     |
[INFO] [stdout] 221 |     pub async fn history(&mut self, mut instruction: &mut Instruction) -> i32 {
[INFO] [stdout]     |                                     ----^^^^^^^^^^^
[INFO] [stdout]     |                                     |
[INFO] [stdout]     |                                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/shell_variables.rs:155:33
[INFO] [stdout]     |
[INFO] [stdout] 155 |     pub async fn pwd(&mut self, mut instruction: &mut Instruction) -> i32 {
[INFO] [stdout]     |                                 ----^^^^^^^^^^^
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/shell_variables.rs:545:13
[INFO] [stdout]     |
[INFO] [stdout] 545 |         let mut res = 0;
[INFO] [stdout]     |             ----^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/shell_variables.rs:573:13
[INFO] [stdout]     |
[INFO] [stdout] 573 |         let mut instruction = instruction;
[INFO] [stdout]     |             ----^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/shell_variables.rs:359:13
[INFO] [stdout]     |
[INFO] [stdout] 359 |         let mut extern_variables: HashMap<String, String> = HashMap::new();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/shell_variables.rs:360:13
[INFO] [stdout]     |
[INFO] [stdout] 360 |         let mut shell_variables: HashMap<String, String> = Self::init_shell_variables();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/shell_variables.rs:221:37
[INFO] [stdout]     |
[INFO] [stdout] 221 |     pub async fn history(&mut self, mut instruction: &mut Instruction) -> i32 {
[INFO] [stdout]     |                                     ----^^^^^^^^^^^
[INFO] [stdout]     |                                     |
[INFO] [stdout]     |                                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/shell_variables.rs:155:33
[INFO] [stdout]     |
[INFO] [stdout] 155 |     pub async fn pwd(&mut self, mut instruction: &mut Instruction) -> i32 {
[INFO] [stdout]     |                                 ----^^^^^^^^^^^
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/shell_instance.rs:107:9
[INFO] [stdout]     |
[INFO] [stdout]  94 | /         loop {
[INFO] [stdout]  95 | |             let command = shell_instance.print_newline().await;  
[INFO] [stdout]  96 | |             match shell_instance.get_command(&command).await {
[INFO] [stdout]  97 | |                 Ok(_) => {
[INFO] [stdout] ...   |
[INFO] [stdout] 106 | |         }
[INFO] [stdout]     | |_________- any code following this expression is unreachable
[INFO] [stdout] 107 |           Ok(())
[INFO] [stdout]     |           ^^^^^^ unreachable expression
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/shell_variables.rs:359:13
[INFO] [stdout]     |
[INFO] [stdout] 359 |         let mut extern_variables: HashMap<String, String> = HashMap::new();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/shell_variables.rs:360:13
[INFO] [stdout]     |
[INFO] [stdout] 360 |         let mut shell_variables: HashMap<String, String> = Self::init_shell_variables();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/shell_instance.rs:107:9
[INFO] [stdout]     |
[INFO] [stdout]  94 | /         loop {
[INFO] [stdout]  95 | |             let command = shell_instance.print_newline().await;  
[INFO] [stdout]  96 | |             match shell_instance.get_command(&command).await {
[INFO] [stdout]  97 | |                 Ok(_) => {
[INFO] [stdout] ...   |
[INFO] [stdout] 106 | |         }
[INFO] [stdout]     | |_________- any code following this expression is unreachable
[INFO] [stdout] 107 |           Ok(())
[INFO] [stdout]     |           ^^^^^^ unreachable expression
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/shell_error.rs:1:36
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::{self, BufRead, Read, Write};
[INFO] [stdout]   |                                    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]    --> src/command_handler.rs:481:51
[INFO] [stdout]     |
[INFO] [stdout] 481 |         use std::io::{self, BufRead, Read, Stdin, Write};
[INFO] [stdout]     |                                                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AsyncWriteExt`
[INFO] [stdout]    --> src/command_handler.rs:494:69
[INFO] [stdout]     |
[INFO] [stdout] 494 |         use tokio::io::{DuplexStream, duplex,AsyncRead, AsyncWrite, AsyncWriteExt};
[INFO] [stdout]     |                                                                     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]    --> src/command_handler.rs:481:38
[INFO] [stdout]     |
[INFO] [stdout] 481 |         use std::io::{self, BufRead, Read, Stdin, Write};
[INFO] [stdout]     |                                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/shell_error.rs:51:21
[INFO] [stdout]    |
[INFO] [stdout] 51 |                     _ => {panic!("Une ShellError n'est pas gérée:: todo()!");},
[INFO] [stdout]    |                     ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/shell_error.rs:51:21
[INFO] [stdout]    |
[INFO] [stdout] 43 |                     Self::QuoteNotClosed(_) => Err(1),
[INFO] [stdout]    |                     ----------------------- matches some of the same values
[INFO] [stdout] 44 |                     Self::ErrorWhileRestoringString => Err(2),
[INFO] [stdout]    |                     ------------------------------- matches some of the same values
[INFO] [stdout] 45 |                     Self::CommandError(_) => Err(3),
[INFO] [stdout]    |                     --------------------- matches some of the same values
[INFO] [stdout] 46 |                     Self::EmptyCommand => Err(4),
[INFO] [stdout]    |                     ------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 51 |                     _ => {panic!("Une ShellError n'est pas gérée:: todo()!");},
[INFO] [stdout]    |                     ^ ...and 4 other patterns collectively make this unreachable
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `metadata`
[INFO] [stdout]    --> src/token.rs:216:24
[INFO] [stdout]     |
[INFO] [stdout] 216 |                     Ok(metadata) => {
[INFO] [stdout]     |                        ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_metadata`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `file` is never read
[INFO] [stdout]    --> src/token.rs:197:24
[INFO] [stdout]     |
[INFO] [stdout] 197 |         let mut file = String::new();
[INFO] [stdout]     |                        ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 203 |                 file = args.remove(0);
[INFO] [stdout]     |                 ---- `file` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/shell_error.rs:1:36
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::{self, BufRead, Read, Write};
[INFO] [stdout]   |                                    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]    --> src/command_handler.rs:481:51
[INFO] [stdout]     |
[INFO] [stdout] 481 |         use std::io::{self, BufRead, Read, Stdin, Write};
[INFO] [stdout]     |                                                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AsyncWriteExt`
[INFO] [stdout]    --> src/command_handler.rs:494:69
[INFO] [stdout]     |
[INFO] [stdout] 494 |         use tokio::io::{DuplexStream, duplex,AsyncRead, AsyncWrite, AsyncWriteExt};
[INFO] [stdout]     |                                                                     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]    --> src/command_handler.rs:481:38
[INFO] [stdout]     |
[INFO] [stdout] 481 |         use std::io::{self, BufRead, Read, Stdin, Write};
[INFO] [stdout]     |                                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/command_handler.rs:34:17
[INFO] [stdout]    |
[INFO] [stdout] 34 |             let mut all_tokens: Vec<Vec<Token>> = Vec::new();
[INFO] [stdout]    |                 ----^^^^^^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `all_tokens`
[INFO] [stdout]   --> src/command_handler.rs:34:17
[INFO] [stdout]    |
[INFO] [stdout] 34 |             let mut all_tokens: Vec<Vec<Token>> = Vec::new();
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_all_tokens`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/shell_error.rs:51:21
[INFO] [stdout]    |
[INFO] [stdout] 51 |                     _ => {panic!("Une ShellError n'est pas gérée:: todo()!");},
[INFO] [stdout]    |                     ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/shell_error.rs:51:21
[INFO] [stdout]    |
[INFO] [stdout] 43 |                     Self::QuoteNotClosed(_) => Err(1),
[INFO] [stdout]    |                     ----------------------- matches some of the same values
[INFO] [stdout] 44 |                     Self::ErrorWhileRestoringString => Err(2),
[INFO] [stdout]    |                     ------------------------------- matches some of the same values
[INFO] [stdout] 45 |                     Self::CommandError(_) => Err(3),
[INFO] [stdout]    |                     --------------------- matches some of the same values
[INFO] [stdout] 46 |                     Self::EmptyCommand => Err(4),
[INFO] [stdout]    |                     ------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 51 |                     _ => {panic!("Une ShellError n'est pas gérée:: todo()!");},
[INFO] [stdout]    |                     ^ ...and 4 other patterns collectively make this unreachable
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/command_handler.rs:285:49
[INFO] [stdout]     |
[INFO] [stdout] 285 | ...                   let mut entries = match std::fs::read_dir(candidate) {
[INFO] [stdout]     |                           ----^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `metadata`
[INFO] [stdout]    --> src/token.rs:216:24
[INFO] [stdout]     |
[INFO] [stdout] 216 |                     Ok(metadata) => {
[INFO] [stdout]     |                        ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_metadata`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `file` is never read
[INFO] [stdout]    --> src/token.rs:197:24
[INFO] [stdout]     |
[INFO] [stdout] 197 |         let mut file = String::new();
[INFO] [stdout]     |                        ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 203 |                 file = args.remove(0);
[INFO] [stdout]     |                 ---- `file` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/command_handler.rs:472:21
[INFO] [stdout]     |
[INFO] [stdout] 472 |                 let mut check_tok5 = get_token(&cmd5).unwrap();
[INFO] [stdout]     |                     ----^^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `res`
[INFO] [stdout]    --> src/shell_variables.rs:545:13
[INFO] [stdout]     |
[INFO] [stdout] 545 |         let mut res = 0;
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_res`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/command_handler.rs:34:17
[INFO] [stdout]    |
[INFO] [stdout] 34 |             let mut all_tokens: Vec<Vec<Token>> = Vec::new();
[INFO] [stdout]    |                 ----^^^^^^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `all_tokens`
[INFO] [stdout]   --> src/command_handler.rs:34:17
[INFO] [stdout]    |
[INFO] [stdout] 34 |             let mut all_tokens: Vec<Vec<Token>> = Vec::new();
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_all_tokens`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]    --> src/shell_variables.rs:151:34
[INFO] [stdout]     |
[INFO] [stdout] 151 |     pub async fn exit(&mut self, instruction: &mut Instruction) -> i32 {
[INFO] [stdout]     |                                  ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]    --> src/shell_variables.rs:255:29
[INFO] [stdout]     |
[INFO] [stdout] 255 |     pub async fn rsh(&self, instruction: &mut Instruction, is_spawn: IsSpawn) -> i32 {
[INFO] [stdout]     |                             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/command_handler.rs:285:49
[INFO] [stdout]     |
[INFO] [stdout] 285 | ...                   let mut entries = match std::fs::read_dir(candidate) {
[INFO] [stdout]     |                           ----^^^^^^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `is_spawn`
[INFO] [stdout]    --> src/command_handler.rs:668:70
[INFO] [stdout]     |
[INFO] [stdout] 668 |         pub async fn exec_instruction(instruction: &mut Instruction, is_spawn: IsSpawn) -> tokio::process::Command {
[INFO] [stdout]     |                                                                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/instruction.rs:61:13
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let mut command = String::new();
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/instruction.rs:62:13
[INFO] [stdout]    |
[INFO] [stdout] 62 |         let mut args: Vec<String> = Vec::new();
[INFO] [stdout]    |             ----^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `command`
[INFO] [stdout]   --> src/instruction.rs:61:13
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let mut command = String::new();
[INFO] [stdout]    |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_command`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args`
[INFO] [stdout]   --> src/instruction.rs:62:13
[INFO] [stdout]    |
[INFO] [stdout] 62 |         let mut args: Vec<String> = Vec::new();
[INFO] [stdout]    |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_args`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `res`
[INFO] [stdout]    --> src/shell_variables.rs:545:13
[INFO] [stdout]     |
[INFO] [stdout] 545 |         let mut res = 0;
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_res`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/instruction.rs:103:23
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub fn from_token(mut tokens: &[Token]) -> Result<Self, TokenError> {
[INFO] [stdout]     |                       ----^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/shell_variables.rs:316:25
[INFO] [stdout]     |
[INFO] [stdout] 316 |             if let Some(mut history) = self.shell_variables.get_mut("HISTORY") {
[INFO] [stdout]     |                         ----^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]    --> src/shell_variables.rs:151:34
[INFO] [stdout]     |
[INFO] [stdout] 151 |     pub async fn exit(&mut self, instruction: &mut Instruction) -> i32 {
[INFO] [stdout]     |                                  ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `intern_variables` is never read
[INFO] [stdout]    --> src/shell_variables.rs:353:61
[INFO] [stdout]     |
[INFO] [stdout] 353 |         let mut intern_variables: HashMap<String, String> = HashMap::new();
[INFO] [stdout]     |                                                             ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] 354 |         if  let Some(temp_intern_variables) = some_intern_variables {
[INFO] [stdout] 355 |             intern_variables = temp_intern_variables.clone();
[INFO] [stdout]     |             ---------------- `intern_variables` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/shell_variables.rs:428:17
[INFO] [stdout]     |
[INFO] [stdout] 428 |             Err(e) => panic!("HOME var empty"),
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `u`
[INFO] [stdout]    --> src/shell_variables.rs:399:17
[INFO] [stdout]     |
[INFO] [stdout] 399 |             Err(u) => "Unknown".to_string(),
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_u`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]    --> src/shell_variables.rs:255:29
[INFO] [stdout]     |
[INFO] [stdout] 255 |     pub async fn rsh(&self, instruction: &mut Instruction, is_spawn: IsSpawn) -> i32 {
[INFO] [stdout]     |                             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `is_spawn`
[INFO] [stdout]    --> src/command_handler.rs:668:70
[INFO] [stdout]     |
[INFO] [stdout] 668 |         pub async fn exec_instruction(instruction: &mut Instruction, is_spawn: IsSpawn) -> tokio::process::Command {
[INFO] [stdout]     |                                                                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `current_dir` is never read
[INFO] [stdout]    --> src/shell_variables.rs:449:31
[INFO] [stdout]     |
[INFO] [stdout] 449 |         let mut current_dir = PathBuf::new();
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 461 |             current_dir = PathBuf::from(".");
[INFO] [stdout]     |             ----------- `current_dir` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/instruction.rs:61:13
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let mut command = String::new();
[INFO] [stdout]    |             ----^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/instruction.rs:62:13
[INFO] [stdout]    |
[INFO] [stdout] 62 |         let mut args: Vec<String> = Vec::new();
[INFO] [stdout]    |             ----^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `command`
[INFO] [stdout]   --> src/instruction.rs:61:13
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let mut command = String::new();
[INFO] [stdout]    |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_command`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args`
[INFO] [stdout]   --> src/instruction.rs:62:13
[INFO] [stdout]    |
[INFO] [stdout] 62 |         let mut args: Vec<String> = Vec::new();
[INFO] [stdout]    |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_args`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/instruction.rs:103:23
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub fn from_token(mut tokens: &[Token]) -> Result<Self, TokenError> {
[INFO] [stdout]     |                       ----^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/shell_variables.rs:316:25
[INFO] [stdout]     |
[INFO] [stdout] 316 |             if let Some(mut history) = self.shell_variables.get_mut("HISTORY") {
[INFO] [stdout]     |                         ----^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `intern_variables` is never read
[INFO] [stdout]    --> src/shell_variables.rs:353:61
[INFO] [stdout]     |
[INFO] [stdout] 353 |         let mut intern_variables: HashMap<String, String> = HashMap::new();
[INFO] [stdout]     |                                                             ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] 354 |         if  let Some(temp_intern_variables) = some_intern_variables {
[INFO] [stdout] 355 |             intern_variables = temp_intern_variables.clone();
[INFO] [stdout]     |             ---------------- `intern_variables` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/shell_variables.rs:428:17
[INFO] [stdout]     |
[INFO] [stdout] 428 |             Err(e) => panic!("HOME var empty"),
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `u`
[INFO] [stdout]    --> src/shell_variables.rs:399:17
[INFO] [stdout]     |
[INFO] [stdout] 399 |             Err(u) => "Unknown".to_string(),
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_u`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `current_dir` is never read
[INFO] [stdout]    --> src/shell_variables.rs:449:31
[INFO] [stdout]     |
[INFO] [stdout] 449 |         let mut current_dir = PathBuf::new();
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 461 |             current_dir = PathBuf::from(".");
[INFO] [stdout]     |             ----------- `current_dir` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/signal_handler.rs:127:17
[INFO] [stdout]     |
[INFO] [stdout] 127 |             let mut cmd_or_arg = cmd_or_arg.to_string();
[INFO] [stdout]     |                 ----^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/signal_handler.rs:129:17
[INFO] [stdout]     |
[INFO] [stdout] 129 |             let mut candidates = match is_command {
[INFO] [stdout]     |                 ----^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0433`.
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/signal_handler.rs:127:17
[INFO] [stdout]     |
[INFO] [stdout] 127 |             let mut cmd_or_arg = cmd_or_arg.to_string();
[INFO] [stdout]     |                 ----^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/signal_handler.rs:129:17
[INFO] [stdout]     |
[INFO] [stdout] 129 |             let mut candidates = match is_command {
[INFO] [stdout]     |                 ----^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0433`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rust_shell` (bin "rust_shell" test) due to 3 previous errors; 96 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error: could not compile `rust_shell` (bin "rust_shell") due to 3 previous errors; 95 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "064f20d1994a51137e0e855dc51667f9ffa013d17c0a577ab6610ca463063e69", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "064f20d1994a51137e0e855dc51667f9ffa013d17c0a577ab6610ca463063e69", kill_on_drop: false }`
[INFO] [stdout] 064f20d1994a51137e0e855dc51667f9ffa013d17c0a577ab6610ca463063e69
